From: Georges Basile Stavracas Neto Date: Thu, 17 Oct 2019 10:26:04 +0000 (+0200) Subject: util: Add wiggle helper X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~506 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=d0690c3952c096011cf74ac63c6bffd1845fd3fa;p=gnome-shell.git util: Add wiggle helper Add Util.wiggle(), which accepts the wiggle offset, duration, and number of times, as parameters. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/768 --- diff --git a/js/misc/util.js b/js/misc/util.js index db3742eb3..541f1876b 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -1,7 +1,7 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- /* exported findUrls, spawn, spawnCommandLine, spawnApp, trySpawnCommandLine, formatTime, formatTimeSpan, createTimeLabel, insertSorted, - makeCloseButton, ensureActorVisibleInScrollView */ + makeCloseButton, ensureActorVisibleInScrollView, wiggle */ const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi; const Gettext = imports.gettext; @@ -429,3 +429,37 @@ function ensureActorVisibleInScrollView(scrollView, actor) { duration: SCROLL_TIME }); } + +function wiggle(actor, params) { + params = Params.parse(params, { + offset: 0, + duration: 0, + wiggleCount: 0, + }); + actor.translation_x = 0; + + // Accelerate before wiggling + actor.ease({ + translation_x: -params.offset, + duration: params.duration, + mode: Clutter.AnimationMode.EASE_OUT_QUAD, + onComplete: () => { + // Wiggle + actor.ease({ + translation_x: params.offset, + duration: params.duration, + mode: Clutter.AnimationMode.LINEAR, + repeatCount: params.wiggleCount, + autoReverse: true, + onComplete: () => { + // Decelerate and return to the original position + actor.ease({ + translation_x: 0, + duration: params.duration, + mode: Clutter.AnimationMode.EASE_IN_QUAD, + }); + } + }); + } + }); +}